package com.xieyong.leetcode;


public class Leetcode3170 {
    public static void main(String[] args) {
        Leetcode3170 leetcode3170 = new Leetcode3170();
        String s = "ee**";
        String s1 = leetcode3170.clearStars(s);
        System.out.println(s1);
    }

    //               最后一例超时了

//    public String clearStars(String s) {
//        int[] list = new int[26];
//        char minchar = s.charAt(0);
//        char[] chars = s.toCharArray();
//        for (int i = 0; i < chars.length; i++) {
//            char c = chars[i];
//            if (c != '*') {
//                minchar = c <= minchar ? c : minchar;
//                list[c - 'a']++;
//            } else {
//                while (minchar != 'z' && list[minchar - 'a'] == 0) {
//                    minchar++;
//                }
//                for (int j = i - 1; j >= 0; j--) {
//                    if (minchar == chars[j]) {
//                        chars[j] = '*';
//                        break;
//                    }
//                }
//                list[minchar - 'a']--;
//            }
//
//        }
//        return String.copyValueOf(chars).replace("*", "");
//    }

//
    public String clearStars(String s) {
        int[] list = new int[26];
        StringBuilder sb = new StringBuilder();
        char minchar = s.charAt(0);
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c != '*') {
                minchar = c <= minchar ? c : minchar;
                list[c - 'a']++;
                sb.append(c);
            } else {
                while (minchar != 'z' && list[minchar - 'a'] == 0) {
                    minchar++;
                }
                int index = sb.lastIndexOf(String.valueOf(minchar));
                sb.deleteCharAt(index);
                list[minchar - 'a']--;
            }

        }
        return sb.toString();
    }
}
